// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: GameSelect Object
// Script Author: Christan Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 3 : TYPE_MAINMENU
public alias saveRAM[261] : buttons

// object states

private alias 0 : START_UP
private alias 1 : SLIDE_IN
private alias 2 : MAIN_MENU_IDLE
private alias 3 : MAIN_MENU_SLIDE_OUT
private alias 4 : MAIN_MENU_OUTSIDE
private alias 5 : MAIN_MENU_SLIDE_IN
private alias 6 : BACK_TO_TITLE
private alias 7 : DELETE_RECORD
private alias 8 : INACTIVE
private alias 9 : SLIDE_IN_2

private alias object.value0 : selection.space
private alias object.value1 : selection.offset
private alias object.value2 : selection.current
private alias object.value3 : menu.xcenter
private alias object.value4 : bar.ycenter
private alias object.value5 : start.fadeValue

//Options values (always the first object after main menu)
private alias object[+1].value3 : options.menu.xcenter
private alias object[+1].value7 : options.menu.ycenter
private alias object[+1].value4 : options.bar.xoffset

//DA Garden values (always the second object after main menu)
private alias object[+2].value3 : garden.menu.xcenter
private alias object[+2].value7 : garden.menu.ycenter
private alias object[+2].value4 : garden.bar.xoffset


// Static Values

// Tables

function Menu_Point_Select
	switch selection.current
	case 0
		SetScreenFade(0, 0, 0, start.fadeValue)
		start.fadeValue += 8
		music.volume -= 4
		if start.fadeValue >= 300
			options.gamemode = 1
			stage.activeList = REGULAR_STAGE
			stage.listPos = 0
			LoadStage()
		endif
		break
	case 1
		SetScreenFade(0, 0, 0, start.fadeValue)
		start.fadeValue += 8
		music.volume -= 4
		if start.fadeValue >= 256
			options.gamemode = 1
			stage.activeList = REGULAR_STAGE
			stage.listPos = 1
			LoadStage()
		endif
		break
	case 2
		SetScreenFade(0, 0, 0, start.fadeValue)
		start.fadeValue += 8
		music.volume -= 4
		if start.fadeValue >= 256
			options.gamemode = 1
			stage.activeList = REGULAR_STAGE
			stage.listPos = 2
			LoadStage()
		endif
		break
		break
	endswitch
endfunction

event ObjectMain
	switch object.state
	case START_UP
		screen.xoffset -= 135
		menu.xcenter = screen.xoffset
		bar.ycenter = -100
		start.fadeValue = 256
		SetScreenFade(0, 0, 0, start.fadeValue)
		object.state ++
		break
	case SLIDE_IN
		if start.fadeValue > 0
			start.fadeValue -= 8
		else
			start.fadeValue = 0
			object.state = SLIDE_IN_2
		endif
		if bar.ycenter < 0
			bar.ycenter += 5
		else
			bar.ycenter = 0
			
		end if
		SetScreenFade(0, 0, 0, start.fadeValue)
		break
	case SLIDE_IN_2
		if menu.xcenter < screen.xcenter
			menu.xcenter += 35
			
		else
			object.state = MAIN_MENU_IDLE
		endif
		break
	case MAIN_MENU_IDLE
		if inputPress.down == 1
			if selection.current < 2
				selection.current ++
			else
				selection.current = 0
			endif
			PlaySfx(SfxName[Menu Move], 0)
		endif
		if inputPress.up == 1	
			if selection.current > 0
				selection.current --
			else
				selection.current = 2
			endif
			PlaySfx(SfxName[Menu Move], 0)
		endif
		if inputPress.start == 1
			temp3 = 1
		endif
		if inputPress.ButtonA == 1
			temp3 = 1
		endif
		if inputPress.ButtonB == 1
			temp4 = 1
		endif
		if inputPress.ButtonX == 1
			temp5 = 1
		endif
		if inputPress.ButtonY == 1
			temp6 = 1
		endif
		if temp3 == 1
			object.state ++
			PlaySfx(SfxName[Adventure Select], 0)
			temp3 = 0
		endif
		if temp4 == 1
			PlaySfx(SfxName[Menu Back], 0)
			object.state = BACK_TO_TITLE
		endif
		if temp5 == 1
			arrayPos2 = 410
			arrayPos2 += selection.current
			if saveRAM[arrayPos2] == 0
				PlaySfx(SfxName[Locked], 0)
			else
				object.state = INACTIVE
				CreateTempObject(TypeName[Config Screen], 0, 0, 0)
				object[tempObjectPos].state = 0
				object[tempObjectPos].value4 = selection.current
			end if
			//object.state = DELETE_RECORD
		end if
		if temp6 == 1

		end if			
		break
	case MAIN_MENU_SLIDE_OUT
		callFunction(Menu_Point_Select)
		if menu.xcenter > screen.xoffset
			menu.xcenter -= 15
			bar.ycenter -= 7
		endif
		break
	case MAIN_MENU_OUTSIDE
		if inputPress.ButtonB == 1
			temp3 = 2
		endif
		if temp3 == 2
			PlaySfx(SfxName[Menu Back], 0)
			temp3 = 0
			object.state = MAIN_MENU_SLIDE_IN
		endif
		break
	case MAIN_MENU_SLIDE_IN
		if menu.xcenter < screen.xcenter
			menu.xcenter += 15
			bar.ycenter += 7
		endif
		break
	case BACK_TO_TITLE
			SetScreenFade(0, 0, 0, start.fadeValue)
			start.fadeValue += 8
			music.volume -= 4
			if start.fadeValue >= 300
				LoadPalette("Global/DefaultPal.act", 0, 0, 0, 255)
				temp4 = 0
				stage.activeList = PRESENTATION_STAGE
				stage.listPos = 0
				LoadStage()
			endif
		break
	case DELETE_RECORD
		break
	case INACTIVE
		break
	endswitch
end event

event ObjectDraw
	temp0 = menu.xcenter
	temp0 -= 170
	temp1 = 45
	DrawSpriteScreenXY(27, temp0, temp1)
	DrawSpriteScreenXY(2, temp0, temp1)
	if selection.current == 0
		DrawSpriteScreenXY(3, temp0, temp1)
	end if
	DrawSpriteScreenXY(4, temp0, temp1)
		
	temp5 = saveRAM[410]
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 = menu.xcenter
	temp4 += 55
	DrawNumbers(8, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.milliseconds, 2, 8, 1)

	temp5 = saveRAM[447]
	temp5 += 33
	DrawSpriteScreenXY(32, temp4, temp1)
	DrawSpriteScreenXY(temp5, temp4, temp1)


	temp0 += 30
	temp1 += 55
	DrawSpriteScreenXY(28, temp0, temp1)
	DrawSpriteScreenXY(2, temp0, temp1)
	if selection.current == 1
		DrawSpriteScreenXY(3, temp0, temp1)
	end if
	DrawSpriteScreenXY(5, temp0, temp1)


	temp4 += 4
	temp5 = saveRAM[411]
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5

	temp4 -= 15
	DrawNumbers(8, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.milliseconds, 2, 8, 1)

	DrawSpriteScreenXY(6, temp0, temp1)

	temp5 = saveRAM[448]
	temp5 += 33
	DrawSpriteScreenXY(32, temp4, temp1)
	DrawSpriteScreenXY(temp5, temp4, temp1)

	temp0 += 30
	temp1 += 55
	DrawSpriteScreenXY(29, temp0, temp1)
	DrawSpriteScreenXY(2, temp0, temp1)
	if selection.current == 2
		DrawSpriteScreenXY(3, temp0, temp1)
	end if
	DrawSpriteScreenXY(5, temp0, temp1)


	temp4 += 3
	temp5 = saveRAM[412]
	temp7 = temp5
	temp7 /= 0x1770
	stage.minutes = temp7
	temp7 = temp5
	temp6 = 0x1770
	temp6 *= stage.minutes
	temp7 -= temp6
	temp7 /= 100
	stage.seconds = temp7
	stage.milliseconds = temp5
	
	temp4 -= 15
	DrawNumbers(8, temp4, temp1, stage.minutes, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.seconds, 2, 8, 1)
	temp4 += 11
	DrawSpriteScreenXY(30, temp4, temp1)
	temp4 += 10
	DrawNumbers(8, temp4, temp1, stage.milliseconds, 2, 8, 1)

	DrawSpriteScreenXY(7, temp0, temp1)

	temp5 = saveRAM[449]
	temp5 += 33
	DrawSpriteScreenXY(32, temp4, temp1)
	DrawSpriteScreenXY(temp5, temp4, temp1)

	
	//actual menu stuff
	temp3 = screen.xsize
	temp3 -= screen.xsize
	temp4 = -42
	DrawSpriteScreenXY(0, temp3, temp4)
	temp5 = bar.ycenter
	DrawSpriteScreenXY(26, -3, temp5)	
	temp3 = screen.xsize
	temp3 -= 73
	DrawSpriteScreenXY(1, temp3, temp4)

	temp3 = buttons
	temp3 += 18
	DrawSpriteScreenXY(temp3, 373, 7)
	DrawSpriteScreenXY(31, 394, 5)





end event

event ObjectStartup
	LoadPalette("Global/TimeAttack.act", 0, 0, 0, 255)
	stage[0].activeLayer = 1
	ReadSaveRAM()
	LoadSpriteSheet("Menu/Menu.gif")

	SpriteFrame(0, 0, 73, 282, 1, 29)			//0 Triangle
	SpriteFrame(0, 0, 73, 282, 75, 29)			//1 Triangle

	SpriteFrame(0, -1, 293, 70, 1, 0)			//2 Selector
	SpriteFrame(0, -1, 293, 70, 296, 0)			//3 Selector Selected

	SpriteFrame(65, 13, 200, 12, 151, 78)			//4 WI
	SpriteFrame(59, 13, 214, 12, 149, 102)			//5 SS
	SpriteFrame(59, 27, 35, 12, 183, 127)			//6 Act 1
	SpriteFrame(59, 27, 35, 12, 230, 127)			//7 Act 2
	
	SpriteFrame(-25, 37, 8, 12, 229, 148)			//8 0
	SpriteFrame(-24, 37, 6, 12, 150, 148)			//9 1
	SpriteFrame(-25, 37, 8, 12, 157, 148)			//10 2
	SpriteFrame(-25, 37, 8, 12, 165, 148)			//11 3
	SpriteFrame(-25, 37, 8, 12, 175, 148)			//12 4
	SpriteFrame(-25, 37, 8, 12, 183, 148)			//13 5
	SpriteFrame(-25, 37, 8, 12, 193, 148)			//14 6
	SpriteFrame(-25, 37, 8, 12, 201, 148)			//15 7
	SpriteFrame(-25, 37, 8, 12, 211, 148)			//16 8
	SpriteFrame(-25, 37, 8, 12, 220, 148)			//17 9

	SpriteFrame(0,0, 20, 20, 511, 71)			//18 Keyboard Q
	SpriteFrame(0,0, 20, 20, 448, 71)			//19 Xbox X
	SpriteFrame(0,0, 20, 20, 469, 71)			//20 PS Square
	SpriteFrame(0,0, 20, 20, 490, 71)			//21 Switch Y

	SpriteFrame(0,0, 20, 20, 427, 71)			//22 Keyboard W
	SpriteFrame(0,0, 20, 20, 364, 71)			//23 Xbox Y
	SpriteFrame(0,0, 20, 20, 385, 71)			//24 PS Triangle
	SpriteFrame(0,0, 20, 20, 406, 71)			//25 Switch X


	SpriteFrame(2, 0, 426, 38, 149, 202)			//26 Title

	SpriteFrame(16, 19, 33, 25, 364, 92)			//27 WIZ
	SpriteFrame(16, 19, 33, 25, 398, 92)			//28 SSZ1
	SpriteFrame(16, 19, 33, 25, 432, 92)			//29 SSZ2

	SpriteFrame(-27, 39, 8, 12, 151, 168)			//30 "

	SpriteFrame(0, 0, 20, 22, 364, 119)			//31 trash can

	SpriteFrame(-107,44, 25, 4, 150, 265)			//32 rank hold
	SpriteFrame(-105,30, 19, 17, 244, 248)			//33 Blank Rank
	SpriteFrame(-105,32, 17, 15, 150, 249)			//34 S rank
	SpriteFrame(-105,32, 18, 15, 168, 249)			//35 A rank
	SpriteFrame(-105,32, 18, 15, 187, 249)			//36 B rank
	SpriteFrame(-105,32, 18, 15, 206, 249)			//37 C rank
	SpriteFrame(-105,32, 18, 15, 225, 249)			//38 F rank

	SpriteFrame(-2, 0, 28, 29, 280, 240) //39 trash can

	SetMusicTrack("RANKING.ogg", 0, 1)
	PlayMusic(0)
end event